Описание
Приостанавливает выполнение новых инструкций обработки данных и
позволяет ядру базы данных Microsoft Jet выполнить все незаконченные
операции, такие как оптимизация памяти или интервалы ожидания страниц (только в
рабочей области ядра Microsoft Jet).
DBEngine.Idle [dbRefreshCache]
Замечания
Вызов метода Idle позволяет предоставить ядру базы данных
Microsoft Jet возможность завершить фоновые операции, которые не были
завершены из-за большого объема операций обработки данных. Такая ситуация часто
возникает при работе в многопользовательской и многозадачной среде, когда
времени, выделенного на выполнение фоновых задач, недостаточно для
своевременного обновления всех записей в текущем объекте
Recordset.
Как правило, блокировки изменений снимаются, и данные в
локальном объекте Recordset типа динамического набора записей обновляются
только тогда, когда в системе не происходят никакие другие события (включая и
перемещения указателя мыши). Периодический вызов метода Idle снимает
лишние блокировки изменений, и ядро базы данных получает достаточное количество
времени для того, чтобы выполнить фоновые задачи.
Если в качестве аргумента
указать необязательную константу dbRefreshCache, принудительно
выполняются все отложенные операции записи в файлы .mdb, а память
обновляется с использованием последних данных из файла .mdb.
Данный метод
применяется на автономных компьютерах только при одновременном запуске
нескольких копий приложения. Метод Idle позволяет увеличить производительность в
сети, поскольку ядро базы принуждается к записи данных на диск и снятию ненужных
блокировок в памяти.
Снять блокировки изменений позволяет также включение
операций в транзакцию.
Пример
Следующая программа использует метод Idle, чтобы обеспечить
в процедуре вывода доступ к последним доступным данным в базе данных. Для
выполнения данной процедуры требуется процедура IdleOutput.
Sub IdleX()
Dim dbsNorthwind As Database
Dim strCountry As String
Dim strSQL As String
Dim rstOrders As Recordset
Set dbsNorthwind = OpenDatabase("Борей.mdb")
' Принимает введенное пользователем название страны
' и использует его для создания инструкции SQL.
strCountry = Trim(InputBox("Введите название страны:"))
strSQL = "SELECT * FROM Заказы WHERE СтранаПолучателя = '" & strCountry & "' ORDER BY КодЗаказа"
' Открывает объект Recordset с помощью инструкции SQL.
Set rstOrders = dbsNorthwind.OpenRecordset(strSQL)
' Отображает содержимое объекта Recordset.
IdleOutput rstOrders, strCountry
rstOrders.Close
dbsNorthwind.Close
End Sub
Sub IdleOutput(rstTemp As Recordset, strTemp As String)
' Вызывает метод Idle для снятия ненужных блокировок,
' принудительного выполнения отложенных операций записи,
' и обновления памяти текущими данными из файла .mdb.
DBEngine.Idle dbRefreshCache
' Отображает содержимое объекта Recordset.
With rstTemp
Debug.Print "Страна " & strTemp & ":"
Debug.Print , "КодЗаказа", "КодКлиента", "ДатаРазмещения"
Do While Not .EOF
Debug.Print , !КодЗаказа, !КодКлиента, !ДатаРазмещения
.MoveNext
Loop
End With
End Sub